home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Internet Surfer: Getting Started
/
Internet Surfer - Getting Started (Wayzata Technology)(7231)(1995).bin
/
pc
/
mac
/
bonus
/
peter_le
/
dehqx-20
/
smalleve.p
< prev
Wrap
Text File
|
1991-08-23
|
4KB
|
132 lines
unit SmallEvents;
{ DeHQX v2.0.0 ⌐ Peter Lewis, Aug 1991 }
interface
uses
MyTypes, AppGlobals, MyMainLoop, MyUtilities, MyMenus, Preferences, MyNotifier, DoMenus;
function HandleSimpleEvents (sleep: longInt; rgn: rgnHandle; var reply: HEReply): boolean;
{ Get an event, handle it, and return true if more needs be done }
procedure HandleMainEvents (sleep: longInt; rgn: rgnHandle; var reply: HEReply);
{ Get an event, handle it, then handle menus and keys }
function HandleCancelEvents (sleep: longInt; rgn: rgnHandle; var reply: HEReply): boolean;
{ Get an event, handle it, then handle menus and keys and return true if cancel (cmd-., or quit) }
procedure HandleCancelErrorEvents (sleep: longInt; rgn: rgnHandle; var oe: OSErr; var reply: HEReply);
{ Get an event, handle it, then handle menus and keys and set oe=cancelErr if oe=noErr }
implementation
function HandleSimpleEvents (sleep: longInt; rgn: rgnHandle; var reply: HEReply): boolean;
procedure HandleHilitePrefItem (item: integer);
var
kind: integer;
h: handle;
r: rect;
f: longInt;
begin
GetDItem(prefs_dialog, item, kind, h, r);
HiliteControl(controlHandle(h), 1);
Delay(2, f);
HiliteControl(controlHandle(h), 0);
HandlePrefitem(item);
end;
var
er: eventRecord;
b: boolean;
begin
SetMenus;
if in_foreground then
NotifyCompletion;
WaitForEvent(er, sleep, rgn);
b := HandleEvents(er, reply);
if b then
if (FrontWindow = prefs_dialog) and (prefs_dialog <> nil) then
with reply do
case todo of
T_Close:
begin
ClosePreferences;
b := false;
end;
T_Dialog:
begin
HandlePrefItem(theitem);
b := false;
end;
T_Key:
begin
if (BAND(HEer.message, charCodeMask) = 13) or (BAND(HEer.message, charCodeMask) = 3) then
HandleHilitePrefItem(Pref_Default_Item)
else if (BAND(HEer.message, charCodeMask) = ord('.')) and (BAND(HEer.modifiers, cmdKey) <> 0) then
HandleHilitePrefItem(Pref_Cancel_Item)
else
SysBeep(1);
b := false;
end;
otherwise
;
end;
HandleSimpleEvents := b;
end;
procedure HandleMainEvents (sleep: longInt; rgn: rgnHandle; var reply: HEReply);
begin
if HandleSimpleEvents(sleep, rgn, reply) then
with reply do
case todo of
T_Menu:
begin
DoMenu(themenu, theitem);
end;
T_Key:
SysBeep(1);
otherwise
;
end;
end;
function HandleCancelEvents (sleep: longInt; rgn: rgnHandle; var reply: HEReply): boolean;
var
b: boolean;
a: integer;
begin
b := false;
if HandleSimpleEvents(sleep, rgn, reply) then
with reply do
case todo of
T_Menu:
begin
b := quitNow;
DoMenu(themenu, theitem);
if quitNow and not b then begin
a := Alert(quit_now_alert_id, nil);
if a <> 1 then begin
quitNow := false;
HiliteMenu(0);
end;
end;
if quitNow then
b := true;
end;
T_Key:
if (BAND(HEer.message, charCodeMask) = ord('.')) and (BAND(HEer.modifiers, cmdKey) <> 0) then
b := true
else
SysBeep(1);
T_Dialog:
b := true; { Only dialog event we can get is the Cancel button (I think!), others are handled before here }
otherwise
;
end;
HandleCancelEvents := b;
end;
procedure HandleCancelErrorEvents (sleep: longInt; rgn: rgnHandle; var oe: OSErr; var reply: HEReply);
begin
if HandleCancelEvents(sleep, rgn, reply) then
if oe = noErr then
oe := cancelErr;
end;
end.